iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0

講完了 Volume 之後,接著要講 Network 了。

在過去,各種服務都是單體架構(Monolithic)的,簡單來說就是整包就是一個服務,包含服務、測試等等的東西全部都在一包裡面。不出問題時都還好,一旦出現問題,需要修復時就會面臨到就算只動一部分,有可能牽涉的範圍就很廣泛。

因此有人提出了微服務的概念,微服務簡單說就是將原本單體架構的各個單元分開,例如資料庫或其他小單元等等,跑在各自的運行環境中,在將各個小單元聯繫起來,這樣子做的優點是如果其中一個服務掛掉,整個服務至少還在,避免全面停擺,在更新及維護時也可以針對各個部分進行維護。

雖然微服務概念看起來很好,但在實作時還是要看當初設計人員的功力如何。
幼稚園小朋友畫出的設計圖跟20年以上經驗的專業設計師畫出的設計圖如果都拿去蓋房子,後者就算不是豪宅至少也是安全的房子,至於前者的話一定是危樓。微服務也是同理。

好了,講了這麼多,各個單元要聯繫起來,就一定少不了網路。因此 Docker 也提供 Network 來聯繫各個 Container 。

Docker 中如果是各個 Container 要連結到 Network 有兩種方式

  1. 先建立好 Network 再讓各個 Container 連結
  2. 先開好 Container 再用 Network 連結各個 Container

我個人是都使用第一種方式,因此這篇主要講第一種方式。

首先,要先建立 Network 可以使用下面的指令。

$ docker network create --driver bridge <network_name>
# 範例
$ docker network create --driver bridge test

建立好之後,就可以讓 Container 連結到 Network 了。

$ docker run --net=container:<network_name> <image_name>
# 範例
$ docker run --net=container:test my-project

只要依序將各個 Container 連結到 Network 就可以互相溝通了。

接著如果需要管理 Network 可以使用以下的指令。

# 列出所有的 Network
$ docker network ls

# 刪除 Network
$ docker network rm <network_name>

# 刪除不使用的 Network
$ docker network prune

需要注意的是 Docker 有三個預設的 Network ,注意不要刪到了喔。

那麼就先到這邊, Network 比較不好單獨使用,因此這篇就沒有 Demo 了,明天介紹的東西搭配 Network 才更能體會到 Network 的使用方式。

大家掰~掰~


上一篇
Day 07 Docker Volume
下一篇
Day 09 Docker-Compose - 1
系列文
30天漫遊雲端之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言